[急]求一能显示/打印自身的函数或宏,请高手指教!!!

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:37:04
我想寻找一个函数或宏,可以显示被调用的函数,以及调用原因,我想这种函数或宏其实本质应当是显示自身吧。
我想了一个比如:
//////////////////////////////////////////////////////
void ShowMsg(bool value,char* reason);//value为faulse则显示故障原因
char temp[256];
#define _M(mFun,mReason) strcpy(temp,"mFun");ShowMsg( temp,"mReason");
//////////////////////////////////////////////////////
这样调用 _M(check(),原因) 就可以不仅执行check()这个函数,还可以显示/打印check() 原因,方便写函数。

但这种方法可能比较苯了,编译有时还有问题(不能有可变原因参数)希望能告诉一个好方法。
最好子函数就写成贴近日常用语的东西,只要每句前加一个如_M就可以了,比如日常生活中有很多东西,可以列成表,前面是判断,后面是执行或原因:
天好 出去玩
股市升 买
饿 吃
如果编程,只要写成:
_M 天好 出去玩
_M 股市升 买
_M 饿 吃
这样会以一种更加接近自然语言的方法编程,特别是二次开发。

希望那位高人指点,不甚感激!
void ShowMsg(bool value,char* reason);//temp可定义为全局变量
{
if(!value) SHOW(temp,reason);

}
这样就可以显示判断条件和原因,其实也可以把原因换成某些执行函数/动作

用函数指针 下面这个是编译通过的
#include "stdio.h"
#define _M(x,y) ;myoperate(x,y)
void play(char a[])
{
printf("我今天出去玩,因为%s\n",a);
}

void sleep(char a[])
{
printf("我今天想睡觉,因为%s\n",a);
}

void myoperate( void (*p)(char []),char a[])
{
p(a);
}

int main()
{
char a[20]="心情好";
char b[20]="天气好";
char c[20]="不舒服";
char d[20]="很累";
_M(play,a);
_M(play,b);
_M(sleep,c);
_M(sleep,d);
getchar();
return 0;
}
//
//下面的是不采用函数指针的
#include "stdio.h"
#include <string.h>
#define _M(x,y) ;myoperate(x,y)
void play(char a[])
{
printf("我今天出去玩,因为%s\n",a);
}

void sleep(char a[])
{
printf("我今天想睡觉,因为%s\n",a);
}

void myoperate(char a[],char b[])